package com.briup.srms.sms.service;

import java.util.List;

import javax.validation.constraints.NotNull;

import com.briup.srms.sms.bean.Student;
import com.briup.srms.sms.bean.extend.StudentExtend;
import com.briup.srms.sms.vm.StudentClazzVM;
import com.briup.srms.sms.vm.StudentsDirectionVM;
import com.jacky.base.utils.CustomerException;
import com.jacky.base.utils.PageVM;

public interface IStudentService {

	// 查找实训学生信息
	PageVM<StudentExtend> pageQuery(int page,int pageSize,String realname,Long trainId,Long channelId);
	// 根据身份证号查询
	Student findByIdCard(String idCard);
	// 根据学号查询
	Student findStudentByStuNo(String stuNo);
	// 根据clazzID查询
	List<Student> queryByClazzId(long clazzId);
	// 查找学生信息
	PageVM<StudentExtend> pageQuery(int page,int pageSize,String realname,Long clazzId,String status,Long[] channelId,String[] stuTypes,String year);
	// 保存或更新
	void saveOrUpdate(Student student) throws CustomerException;
	// 批量导入实训学生
	void batchInsertTrainStudent(List<Student> students,long trainId)  throws CustomerException;
	void deleteById(long id) throws CustomerException;
	// 批量导入报名学生
	void batchInsert(List<Student> students) throws CustomerException;
	//1. 批量确认报名
	void batchConfirmApplay(Long[] ids,String tuition, String reserve);
	//2. 批量确认方向
	void batchConfirmDirection(StudentsDirectionVM sdvm) throws CustomerException;
	//3. 选人入班
	void batchConfirmClazz(StudentClazzVM scvm);
	// 根据账号id查询学生信息
	Student findByAccountId(@NotNull long id);
	// 重点关注
	void attention(@NotNull long id,String type, String comment);
	// 学生报道
	void report(@NotNull long id, String dormitoryType, String dormitory);
	// 批量删除学生信息
	void batchDelete(Long[] ids);
	// 批量修改学费信息
	void batchUpdateTuition(Long[] ids, String tuition, String reserve);
	// 谈话
	void talk(long employeeId,long studentId, String content);
	// 生成账号
	void generatorAccount(Long[] ids) throws CustomerException ;
	// 更改班级
	void changeClazz(Long[] studentId, Long clazzId, String comment);
	// 批量录入老学生数据
	void batchInsertOldStudent(List<Student> students) throws CustomerException;
	// 批量录入班级学生数据
	void batchInsertClazzStudent(List<Student> students) throws CustomerException;
	// 班主任办理离校
	void leaveBriup(Long studentId);
	// 注册学生
	void register(Student student);
	// 重置密码
	void resetPassword(long id);
	// 取消关注
	void cancelAttention(@NotNull long id);

	void test_generator_employment();

	// 恢复入学
    void backBriup(Long stuId, Long clazzId);
}
